#ifndef __TRANSFORM_H__
#define __TRANSFORM_H__

namespace std
{
	template <class VectorType>
	class vector;
}

namespace MegaEngine
{
	class Vector3;
	class Mesh;
	class AABB;
	class Renderer;

	class Transform
	{
	private:
		std::vector<Transform*> * childs; //may be NULL
		Transform * parent; //may be NULL
		Vector3* position;
		Vector3* scale;
		Vector3* rotation;
		Mesh* model; //may be NULL
		AABB* bBox;

	public:
		Vector3 GetPosition();
		Vector3 SetPosition(Vector3);
		Vector3 GetScale(Vector3);
		Vector3 GetRotation();
		Vector3 SetRotation(Vector3);
		void AddChild(Transform*);
		void Draw(Renderer*);

		Transform();
		~Transform();
	};

} //MegaEngine
#endif //__TRANSFORM_H__